#ifndef ARGUMENTS_H
#define ARGUMENTS_H

#include "../Technical/Config.h"

namespace STC_calc
{
/*
template <typename T>
class Diapason
{
private:
    std::pair<T, T> range;
public:
    Diapason(const T& value){range = {value, value};}
    Diapason(const T& min, const T& max){range = {min, max};}
    ~Diapason();
    void operator =(const T& value){range = {value, value};}
    void operator =(const Diapason& other){range = other.range;}

    std::pair<T,T> get(){return range;}

    bool operator ==(const Diapason& other){return (range == other.range);}
    bool operator ==(const T& value){return (range.first >= value)&&(range.second <= value);}

    bool operator !=(const Diapason& other){return !(this == other);}
    bool operator !=(const T& value){return !(this == value);}
};*/

class Arguments
{
private:
	Arguments();
	~Arguments();

	static void check_count_args(const string_list& args, const std::vector<int> count);
public:
	static void arg_IF(const string_list& args);
	static void arg_IF0(const string_list& args);
	static void arg_IF1(const string_list& args);

	static void arg_SIMPLE(const string_list& args);
	static void arg_FILE(const string_list& args);
	static void arg_GRAPH(const string_list& args);
	static void arg_INTEGRAL(const string_list& args);
	static void arg_DIFF(const string_list& args);

	static void arg_help(const string_list& args);
    static void arg_variable(string_list &args);
    static void arg_constant(string_list& args);
	static void arg_begin(const string_list& args);
	static void arg_set_num_steps (const string_list& args);
	static void arg_set_output_file (const string_list& args);
	static void arg_set_degree_trigonometry (const string_list& args);
};

}
#endif // ARGUMENTS_H
